home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / dev / src / wangisrc.lha / wangi / z / oldwp / Prefs / Window_GadgetED.PAS < prev    next >
Pascal/Delphi Source File  |  1995-02-26  |  14KB  |  470 lines

  1. Function GadEDWindow; 
  2.  
  3. CONST
  4.     NI         = 0; 
  5.     CC         = 1;
  6.     G_TYPE     = 2;
  7.     G_TXT      = 3; 
  8.     G_CMDD     = 4; 
  9.     G_CMDF     = 5; 
  10.     G_CMDREQ   = 6; 
  11.     G_STACK    = 7; 
  12.     G_PRIORITY = 8; 
  13.     G_RCMD     = 9; 
  14.     G_RPORT    = 10; 
  15.     G_OUT      = 11;
  16.     G_KEY      = 12;
  17.     G_TOOLS    = 13;
  18.     G_EDITCMD  = 14;
  19.     G_OK       = 15; 
  20.     G_CAN      = 16;
  21.  
  22. VAR 
  23.     T            : Array[0..13] of tTagItem;
  24.     CmdFile, 
  25.     CmdDir       : String;
  26.     GadFlags     : tNewGadget;
  27.     G            : Array[NI..G_CAN] of pGadget;
  28.     dis          : Array[2..G_CAN] of LONG;
  29.     cr           : pFileRequester;
  30.     dummy,
  31.     curtype,
  32.     tmppri : LONG;
  33.     msgcode : Word;
  34.     ExitFlag, OK, 
  35.     cont,
  36.     ToolMenu,
  37.     EditCmd      : Boolean;
  38.     TheWin       : pWindow;
  39.     message      : pIntuiMessage;
  40.     MsgClass     : LongInt;
  41.     gadID        : LONG;
  42.     StrInfo      : pStringInfo;
  43.     l            : Pointer;
  44.     l2           : LONG;
  45.     ret          : Boolean;
  46.     RK           : pRemember;
  47.     l3           : BPTR;
  48.     strp         : STRPTR;
  49.     typelabs     : Array[0..4] of STRPTR;
  50.     bf           : tBackFill;
  51.  
  52. Procedure DisGads;
  53.  
  54. var
  55.     n : Integer;
  56.     
  57. begin
  58.     For n := 2 to G_CAN do
  59.         dis[n] := False_; 
  60.     Case curtype of 
  61.         TYPE_WB : Begin
  62.             dis[G_OUT] := True_;
  63.             dis[G_EDITCMD] := True_;
  64.         End;
  65.         TYPE_AREXX : Begin
  66.             dis[G_CMDD] := True_;
  67.             dis[G_CMDF] := True_;
  68.             dis[G_CMDREQ] := True_;
  69.             dis[G_STACK] := True_;
  70.             dis[G_PRIORITY] := True_;
  71.             dis[G_OUT] := True_;
  72.             dis[G_EDITCMD] := True_;
  73.         End;
  74.         TYPE_COMNT : Begin
  75.             dis[G_CMDD] := True_;
  76.             dis[G_CMDF] := True_;
  77.             dis[G_CMDREQ] := True_;
  78.             dis[G_STACK] := True_;
  79.             dis[G_PRIORITY] := True_;
  80.             dis[G_RCMD] := True_;
  81.             dis[G_RPORT] := True_;
  82.             dis[G_OUT] := True_;
  83.             dis[G_KEY] := True_;
  84.             dis[G_EDITCMD] := True_;
  85.         End;
  86.     End;
  87.     If Reg.key_ID = UNREG then
  88.         dis[G_KEY] := True_;
  89.     For n := 2 to G_CAN do begin
  90.         t[0].ti_Tag  := GA_Disabled;
  91.         t[0].ti_Data := dis[n];
  92.         t[1].ti_Tag  := TAG_DONE;
  93.         GT_SetGadgetAttrsA(G[n], Thewin, NIL, @t);
  94.     End;
  95. End;
  96.  
  97.  
  98.  
  99. begin
  100.     cr := NIL;
  101.     ret := false;
  102.     ToolMenu := ((node^.wi_Flags and WIF_TOOLMENU) = WIF_TOOLMENU);
  103.     EditCmd := ((node^.wi_Flags and WIF_EDITCMD) = WIF_EDITCMD);
  104.  
  105.     RK := NIL;
  106.     G[NI] := NIL;
  107.     G[CC] := CreateContext(@g[NI]);
  108.     If G[CC] <> NIL Then begin
  109.     
  110.     typelabs[0] := CStrConstPtrAR(@RK, 'Shell');
  111.     typelabs[1] := CStrConstPtrAR(@RK, 'Workbench');
  112.     typelabs[2] := CStrConstPtrAR(@RK, 'ARexx');
  113.     typelabs[3] := CStrConstPtrAR(@RK, 'Comment');
  114.     typelabs[4] := NIL;
  115.     T[0].ti_Tag  := GTCY_Labels;
  116.     T[0].ti_Data := LONG(@typelabs);
  117.     T[1].ti_Tag  := GTCY_Active;
  118.     T[1].ti_Data := node^.wi_Type;
  119.     T[2].ti_Tag  := TAG_DONE;
  120.     With GadFlags Do Begin
  121.         ng_GadgetText := CStrConstPtrAR(@RK, 'Type');
  122.         ng_GadgetID   := G_TYPE;
  123.         ng_TextAttr   := @My_Font;
  124.         ng_Width      := Sizes[S_G2_W];
  125.         ng_LeftEdge   := Sizes[TxtWin_L]+ 4 + BF_W;
  126.         ng_TopEdge    := Sizes[TBS] + 4 + BF_H;
  127.         ng_Height     := Sizes[S_GAD_H];
  128.         ng_VisualInfo := vi;
  129.         ng_Flags      := 0;
  130.     End;
  131.     G[G_TYPE] := CreateGadgetA(CYCLE_KIND, G[CC], @GadFlags, @T);
  132.     curtype := node^.wi_Type;
  133.     
  134.     T[0].ti_Tag  := GTST_MaxChars;
  135.     T[0].ti_Data := 31;
  136.     T[1].ti_Tag  := GTST_String;
  137.     T[1].ti_Data := LONG(node^.wi_Node.ln_Name);
  138.     T[2].ti_Tag  := TAG_DONE;
  139.     With GadFlags Do Begin
  140.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  141.         ng_GadgetText := CStrConstPtrAR(@RK, 'Item Text');
  142.         ng_GadgetID   := G_TXT;
  143.     End;
  144.     G[G_TXT] := CreateGadgetA(STRING_KIND, G[G_TYPE], @GadFlags, @T);
  145.  
  146.     T[0].ti_Data := 180;
  147.     T[1].ti_Data := LONG(node^.wi_Cmd[0]);
  148.     With GadFlags Do Begin
  149.     ng_Width      := Sizes[S_G2_W];
  150.     ng_TopEdge    := ng_TopEdge + ng_Height + 1;
  151.     ng_GadgetText := CStrConstPtrAR(@RK, 'Directory');
  152.     ng_GadgetID   := G_CMDD;
  153.     End;
  154.     G[G_CMDD] := CreateGadgetA(STRING_KIND, G[G_TXT], @GadFlags, @T);
  155.  
  156.     T[1].ti_Data := LONG(node^.wi_Cmd[1]);
  157.     With GadFlags Do Begin
  158.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  159.         ng_GadgetText := CStrConstPtrAR(@RK, 'Command');
  160.         ng_GadgetID   := G_CMDF;
  161.         ng_Width      := Sizes[S_G2_W]-(Sizes[TBS]*2);
  162.     End;
  163.     G[G_CMDF] := CreateGadgetA(STRING_KIND, G[G_CMDD], @GadFlags, @T);
  164.  
  165.     T[0].ti_Tag := TAG_END;
  166.     With GadFlags Do Begin
  167.         ng_LeftEdge   := ng_LeftEdge+ng_Width;
  168.         ng_Width      := Sizes[TBS]*2;
  169.         ng_GadgetText := CStrConstPtrAR(@RK, '^');
  170.         ng_GadgetID   := G_CMDREQ;
  171.     End;
  172.     G[G_CMDREQ] := CreateGadgetA(BUTTON_KIND, G[G_CMDF], @GadFlags, @T);
  173.  
  174.     T[0].ti_Tag  := GTSL_Min;
  175.     T[0].ti_Data := -128;
  176.     T[1].ti_Tag  := GTSL_Max;
  177.     T[1].ti_Data := 127;
  178.     T[2].ti_Tag  := GTSL_Level;
  179.     T[2].ti_Data := node^.wi_Priority;
  180.     T[3].ti_Tag  := GTSL_LevelPlace;
  181.     T[3].ti_Data := PLACETEXT_RIGHT;
  182.     T[4].ti_Tag  := GTSL_LevelFormat;
  183.     T[4].ti_Data := LONG(CStrConstPtrAR(@RK, '%ld'));
  184.     T[5].ti_Tag  := GTSL_MaxLevelLen;
  185.     T[5].ti_Data := 4;
  186.     T[6].ti_Tag  := TAG_DONE;
  187.     With GadFlags Do Begin
  188.         ng_LeftEdge   := Sizes[TxtWin_L]+4+BF_W;
  189.         ng_Width      := Sizes[S_G2_W] div 4;
  190.         ng_GadgetText := CStrConstPtrAR(@RK, 'Priority');
  191.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  192.         ng_GadgetID   := G_PRIORITY;
  193.     End;
  194.     G[G_PRIORITY] := CreateGadgetA(SLIDER_KIND, G[G_CMDREQ], @GadFlags, @T);
  195.     tmppri := node^.wi_Priority;
  196.  
  197.  
  198.     T[0].ti_Tag  := GTIN_MaxChars;
  199.     T[0].ti_Data := 8;
  200.     T[1].ti_Tag  := GTIN_Number;
  201.     T[1].ti_Data := node^.wi_Stack;
  202.     T[2].ti_Tag  := TAG_DONE;
  203.     With GadFlags Do Begin
  204.         ng_Width      := Sizes[S_G2_W] div 3;
  205.         ng_LeftEdge   := ng_LeftEdge + Sizes[S_G2_W] - ng_Width;
  206.         ng_GadgetText := CStrConstPtrAR(@RK, 'Stack');
  207.         ng_GadgetID   := G_STACK;
  208.     End;
  209.     G[G_STACK] := CreateGadgetA(INTEGER_KIND, G[G_PRIORITY], @GadFlags, @T);
  210.  
  211.     T[0].ti_Tag  := GTST_MaxChars;
  212.     T[0].ti_Data := 180;
  213.     T[1].ti_Tag  := GTST_String;
  214.     T[1].ti_Data := LONG(node^.wi_Output);
  215.     T[2].ti_Tag  := TAG_DONE;
  216.     With GadFlags Do Begin
  217.         ng_LeftEdge   := Sizes[TxtWin_L]+4+BF_W;
  218.         ng_Width      := Sizes[S_G2_W];
  219.         ng_GadgetText := CStrConstPtrAR(@RK, 'Input/Output');
  220.         ng_GadgetID   := G_OUT;
  221.         ng_Flags      := PLACETEXT_LEFT;
  222.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  223.     End;
  224.     G[G_OUT] := CreateGadgetA(STRING_KIND, G[G_STACK], @GadFlags, @T);
  225.  
  226.     T[1].ti_Data := LONG(node^.wi_RexxCmd);
  227.     With GadFlags Do Begin
  228.         ng_GadgetText := CStrConstPtrAR(@RK, 'ARexx Command');
  229.         ng_GadgetID   := G_RCMD;
  230.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  231.     End;
  232.     G[G_RCMD] := CreateGadgetA(STRING_KIND, G[G_OUT], @GadFlags, @T);
  233.     
  234.     T[0].ti_Data := 25;
  235.     T[1].ti_Data := LONG(node^.wi_RexxPort);
  236.     With GadFlags Do Begin
  237.         ng_GadgetText := CStrConstPtrAR(@RK, 'ARexx Port');
  238.         ng_GadgetID   := G_RPORT;
  239.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  240.     End;
  241.     G[G_RPORT] := CreateGadgetA(STRING_KIND, G[G_RCMD], @GadFlags, @T);
  242.     
  243.     T[0].ti_Data := 80;
  244.     T[1].ti_Data := LONG(node^.wi_HotKey);
  245.     With GadFlags Do Begin
  246.         ng_GadgetText := CStrConstPtrAR(@RK, 'Hot Key');
  247.         ng_GadgetID   := G_KEY;
  248.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  249.     End;
  250.     G[G_KEY] := CreateGadgetA(STRING_KIND, G[G_RPORT], @GadFlags, @T);
  251.     
  252.     T[0].ti_Tag  := GTCB_Checked;
  253.     T[0].ti_Data := Ord(ToolMenu);
  254.     T[1].ti_Tag  := GTCB_Scaled;
  255.     T[1].ti_Data := True_;
  256.     T[2].ti_Tag  := TAG_END;
  257.     With GadFlags Do Begin
  258.         ng_GadgetText := CStrConstPtrAR(@RK, 'Tools Menu');
  259.         ng_GadgetID   := G_TOOLS;
  260.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  261.         ng_Width      := ng_Height*2;
  262.         If GadToolsBase^.lib_Version < 39 then begin
  263.             ng_Width    := CHECKBOX_WIDTH;
  264.             ng_Height   := CHECKBOX_HEIGHT;
  265.         End;
  266.     End;
  267.     G[G_TOOLS] := CreateGadgetA(CHECKBOX_KIND, G[G_KEY], @GadFlags, @T);
  268.     
  269.     T[0].ti_Data := Ord(EditCmd);
  270.     With GadFlags Do Begin
  271.         ng_GadgetText := CStrConstPtrAR(@RK, 'Edit Command');
  272.         ng_GadgetID   := G_EDITCMD;
  273.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  274.     End;
  275.     G[G_EDITCMD] := CreateGadgetA(CHECKBOX_KIND, G[G_TOOLS], @GadFlags, @T);
  276.     
  277.     T[0].ti_Tag := TAG_END;
  278.     With GadFlags Do Begin
  279.         ng_LeftEdge   := Sizes[S_WB_L]+8;
  280.         ng_Width      := (Sizes[S_G2_W] div 3);
  281.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 8;
  282.         ng_GadgetText := CStrConstPtrAR(@RK, 'Ok');
  283.         ng_GadgetID   := G_OK;
  284.         ng_Flags      := 0;
  285.     End;
  286.     G[G_OK] := CreateGadgetA(BUTTON_KIND, G[G_EDITCMD], @GadFlags, @T);
  287.  
  288.     With GadFlags Do Begin
  289.         ng_LeftEdge   := Sizes[TxtWin_L] + (Sizes[S_G2_W]+4+(2*BF_W))-ng_Width; 
  290.         ng_GadgetText := CStrConstPtrAR(@RK, 'Cancel');
  291.         ng_GadgetID   := G_CAN;
  292.     End;
  293.     G[G_CAN] := CreateGadgetA(BUTTON_KIND, G[G_OK], @GadFlags, @T);
  294.          
  295.     T[0].ti_Tag  := WA_Left;
  296.     T[0].ti_Data := Left;
  297.     T[1].ti_Tag  := WA_Top;
  298.     T[1].ti_Data := Top;
  299.     T[2].ti_Tag  := WA_InnerWidth;
  300.     T[2].ti_Data := Sizes[TxtWin_L] + Sizes[S_G2_W] + 8 + (2*BF_W);
  301.     T[3].ti_Tag  := WA_Height;
  302.     T[3].ti_Data := g[G_CAN]^.TopEdge + g[G_CAN]^.Height + Sizes[S_WB_B] + 4;
  303.     T[4].ti_Tag  := WA_Title;
  304.     T[4].ti_Data := LONG(CStrConstPtrAR(@RK, 'Edit Pad Item.')); 
  305.     T[5].ti_Tag  := WA_IDCMP;
  306.     T[5].ti_Data := STRINGIDCMP|BUTTONIDCMP|IDCMP_GADGETUP|IDCMP_REFRESHWINDOW|
  307.      IDCMP_CLOSEWINDOW|SLIDERIDCMP|IDCMP_MOUSEMOVE;
  308.     T[6].ti_Tag  := WA_DragBar;
  309.     T[6].ti_Data := True_;
  310.     T[7].ti_Tag  := WA_DepthGadget;
  311.     T[7].ti_Data := True_;
  312.     T[8].ti_Tag  := WA_AutoAdjust;
  313.     T[8].ti_Data := True_;
  314.     T[9].ti_Tag  := WA_Activate;
  315.     T[9].ti_Data := True_;
  316.     T[10].ti_Tag := WA_Gadgets;
  317.     T[10].ti_Data:= LONG(g[NI]);
  318.     T[11].ti_Tag := WA_SimpleRefresh;
  319.     T[11].ti_Data:= True_; 
  320.     T[12].ti_Tag := WA_CloseGadget;
  321.     T[12].ti_Data:= True_; 
  322.     T[13].ti_Tag := TAG_DONE;
  323.     
  324.     TheWin := OpenWindowTaglist(NIL,@T);
  325.     If TheWin <> NIL Then begin
  326.         InitBackFill(bf, TheWin, Sizes[S_WB_L], Sizes[TBS], T[2].ti_Data, 
  327.            T[3].ti_Data-Sizes[TBS]-Sizes[S_WB_B], BF_W, BF_H, BBF_H, 2, 0, JAM1); 
  328.         
  329.         GT_RefreshWindow(TheWin, NIL);
  330.         RefreshGList(g[NI], TheWIn, NIL, -1);
  331.         
  332.         DisGads;
  333.  
  334.         ExitFlag := False;
  335.         While Not exitflag Do Begin
  336.             dummy := Wait(BitMask(TheWin^.UserPort^.MP_SIGBIT));
  337.             Repeat
  338.                 cont := True;
  339.                 message  := GT_GetIMsg(TheWin^.userPort);
  340.                 If message <> NIL then begin
  341.                     MsgClass := message^.Class;
  342.                     MsgCode := message^.Code;
  343.                     if (MsgClass = IDCMP_GADGETUP) or (MsgClass = IDCMP_MOUSEMOVE) then begin
  344.                         GadID := pGadget(message^.IAddress)^.GadgetID;
  345.                         StrInfo  := pGadget(message^.IAddress)^.SpecialInfo;
  346.                     end;
  347.                     GT_ReplyIMsg(message);
  348.                     Case MsgClass Of
  349.           
  350.                         IDCMP_REFRESHWINDOW : Begin
  351.                             GT_BeginRefresh(TheWin);
  352.                             DrawBackFill(bf, TheWin);
  353.                             GT_EndRefresh(TheWin, True);
  354.                             RefreshGList(g[NI], TheWin, NIL, -1);
  355.                             GT_RefreshWindow(TheWin, NIL);
  356.                         end;
  357.               IDCMP_CLOSEWINDOW : ExitFlag := True;
  358.               IDCMP_MOUSEMOVE : If GadID = G_PRIORITY then
  359.                   tmppri := Integer(MsgCode);
  360.                         IDCMP_GADGETUP : Begin
  361.                             Case GadID Of
  362.                                 G_CMDREQ  : begin
  363.                                     l := pointer(rtLockWindow(TheWin));
  364.                    
  365.                                     StrInfo := g[G_CMDD]^.SpecialInfo;
  366.                                     CmdDir := PtrToPas(strinfo^.Buffer)+#0;
  367.                                     StrInfo := g[G_CMDF]^.SpecialInfo;
  368.                                     CmdFile := PtrToPas(strinfo^.Buffer)+#0;
  369.                 
  370.                                     T[0].ti_Tag  := ASLFR_TitleText;
  371.                                     T[0].ti_Data := LONG(CStrConstPtrAR(@RK, 'Pick Command'));
  372.                                     T[1].ti_Tag  := ASLFR_Window;
  373.                                     T[1].ti_Data := long(TheWin);
  374.                                     T[2].ti_Tag  := ASLFR_Flags1;
  375.                                     T[2].ti_Data := 0;
  376.                                     T[3].ti_Tag  := ASLFR_InitialPattern;
  377.                                     T[3].ti_Data := LONG(CStrConstPtrAR(@RK, '~(#?.info)'));
  378.                                     T[4].ti_Tag  := ASLFR_InitialDrawer;
  379.                                     T[4].ti_Data := long(@CmdDir[1]);
  380.                                     T[5].ti_Tag  := ASLFR_InitialFile;
  381.                                     T[5].ti_Data := long(@CmdFile[1]);
  382.                                     T[6].ti_Tag  := TAG_DONE;
  383.     
  384.                                     cr := AllocASLRequest(ASL_FileRequest, @T[0]);
  385.                 
  386.                                     if AslRequest(cr, NIL) then begin
  387.                    
  388.                            l3 := Lock(STRPTR(cr^.fr_Drawer), ACCESS_READ);
  389.                            if l3 <> NULL then begin
  390.                                strp := AllocMem(180, MEMF_CLEAR);
  391.                                if strp <> NIL then begin
  392.                                    if NameFromLock(l3,strp,180) then begin
  393.                                        CmdDir := PtrToPas(strp)+#0;
  394.                                                     CmdFile := PtrToPas(STRPTR(cr^.fr_file))+#0;
  395.     
  396.                                                     T[0].ti_Tag  := GTST_String;
  397.                                                     T[0].ti_Data := LONG(CStrConstPtrAR(@RK, CmdFile));
  398.                                                     T[1].ti_Tag  := TAG_END;
  399.                                                     GT_SetGadgetAttrsA(g[G_CMDF], TheWin, NIL, @T);
  400.     
  401.                                                     T[0].ti_Data := LONG(CStrConstPtrAR(@RK, CmdDir));
  402.                                                     GT_SetGadgetAttrsA(g[G_CMDD], TheWin, NIL, @T);
  403.                                                 end;
  404.                                                 FreeMem_(strp,180);
  405.                                             end;
  406.                                         end;
  407.                                     end;        
  408.                                     FreeAslRequest(cr);
  409.                                     rtUnLockWindow(TheWin, l);
  410.                                 end;
  411.                                 
  412.                                 G_TYPE : Begin
  413.                                     curtype := msgcode;
  414.                                     DisGads;
  415.                                 End;
  416.     
  417.                                 G_OK : begin         
  418.                                     node^.wi_Type := CurType;
  419.                                         
  420.                                     StrInfo := g[G_TXT]^.SpecialInfo;
  421.                                     node^.wi_Node.ln_Name := CStrConstPtrAR(@RememberKey, PtrToPas(strinfo^.Buffer));
  422.     
  423.                                     StrInfo := g[G_CMDD]^.SpecialInfo;
  424.                                     node^.wi_Cmd[0] := CStrConstPtrAR(@RememberKey, PtrToPas(strinfo^.Buffer));
  425.     
  426.                                     StrInfo := g[G_CMDF]^.SpecialInfo;
  427.                                     node^.wi_Cmd[1] := CStrConstPtrAR(@RememberKey, PtrToPas(strinfo^.Buffer));
  428.     
  429.                                     StrInfo := g[G_RCMD]^.SpecialInfo;
  430.                                     node^.wi_RexxCmd := CStrConstPtrAR(@RememberKey, PtrToPas(strinfo^.Buffer));
  431.     
  432.                                     StrInfo := g[G_RPORT]^.SpecialInfo;
  433.                                     node^.wi_RexxPort := CStrConstPtrAR(@RememberKey, PtrToPas(strinfo^.Buffer));
  434.     
  435.                                     node^.wi_priority := tmppri;
  436.     
  437.                                     StrInfo := g[G_STACK]^.SpecialInfo;
  438.                                     node^.wi_stack := strinfo^.LongInt_;
  439.         
  440.                                     StrInfo := g[G_OUT]^.SpecialInfo;
  441.                                     node^.wi_Output := CStrConstPtrAR(@RememberKey, PtrToPas(strinfo^.Buffer));
  442.                                     
  443.                                     StrInfo := g[G_KEY]^.SpecialInfo;
  444.                                     node^.wi_HotKey := CStrConstPtrAR(@RememberKey, PtrToPas(strinfo^.Buffer));
  445.     
  446.                                     node^.wi_Flags := 0;
  447.                                     if G[G_TOOLS]^.Flags and GFLG_SELECTED <> 0 then 
  448.                                         node^.wi_Flags := node^.wi_Flags|WIF_TOOLMENU;
  449.                                     if G[G_EDITCMD]^.Flags and GFLG_SELECTED <> 0 then 
  450.                                         node^.wi_Flags := node^.wi_Flags|WIF_EDITCMD;
  451.                                         
  452.                                     ExitFlag := True;
  453.                                     ret := True;
  454.                                 end;
  455.                 
  456.                                 G_CAN : ExitFlag := True;
  457.                             End; (*case*)
  458.                         end;
  459.                     End; (*case*)
  460.                 end else cont := False;
  461.                 Until cont = True;
  462.             End; (*while*)
  463.             FreeBackFill(bf);
  464.             CloseWindow(TheWin);
  465.             FreeGadgets(g[NI]);
  466.         end;
  467.     end;
  468.     FreeRemember(@RK, true);
  469.     GadEDWindow := ret;
  470. end;